home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / v cisle / autoit / autoit-v3.2.0.1-setup.exe / Include / GuiMonthCal.au3 < prev    next >
Text File  |  2006-07-22  |  17KB  |  368 lines

  1. ; Include Version:1.66 (17 July 2006)
  2. #include-once
  3. #include <DateTimeConstants.au3>
  4. ; Include Version:1.49  (1/17/2006)
  5. ; ------------------------------------------------------------------------------
  6. ;
  7. ; AutoIt Version: 3.1.1++
  8. ; Language:       English
  9. ; Description:    Functions that assist with MonthCal.
  10. ;
  11. ; ------------------------------------------------------------------------------
  12.  
  13.  
  14. ; function list
  15. ;===============================================================================
  16. ;_GUICtrlMonthCalGet1stDOW
  17. ;_GUICtrlMonthCalGetColor
  18. ;_GUICtrlMonthCalGetMaxSelCount
  19. ;_GUICtrlMonthCalGetMaxTodayWidth
  20. ;_GUICtrlMonthCalGetMinReqRECT
  21. ;_GUICtrlMonthCalGetDelta
  22. ;_GUICtrlMonthCalSetColor
  23. ;_GUICtrlMonthCalSet1stDOW
  24. ;_GUICtrlMonthCalSetMaxSelCount
  25. ;_GUICtrlMonthCalSetDelta
  26. ;===============================================================================
  27.  
  28. ;===============================================================================
  29. ;
  30. ; Description:            _GUICtrlMonthCalGet1stDOW
  31. ; Parameter(s):        $h_monthcal - controlID
  32. ; Requirement:            None.
  33. ; Return Value(s):    String of 1st Day Of Week
  34. ; User CallTip:        _GUICtrlMonthCalGet1stDOW($h_monthcal) Retrieves the first day of the week for a month calendar control. (required: <GuiMonthCal.au3>)
  35. ; Author(s):            Gary Frost (custompcs at charter dot net)
  36. ; Note(s):
  37. ;
  38. ;===============================================================================
  39. Func _GUICtrlMonthCalGet1stDOW($h_monthcal)
  40.    Local $result
  41.    If IsHWnd($h_monthcal) Then
  42.       Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_monthcal, "int", $MCM_GETFIRSTDAYOFWEEK, "int", 0, "int", 0)
  43.       $result = $a_ret[0]
  44.    Else
  45.       $result = GUICtrlSendMsg($h_monthcal, $MCM_GETFIRSTDAYOFWEEK, 0, 0)
  46.    EndIf
  47.    Select
  48.       Case $result = 0
  49.          Return "Monday"
  50.       Case $result = 1
  51.          Return "Tuesday"
  52.       Case $result = 2
  53.          Return "Wednesday"
  54.       Case $result = 3
  55.          Return "Thursday"
  56.       Case $result = 4
  57.          Return "Friday"
  58.       Case $result = 5
  59.          Return "Saturday"
  60.       Case $result = 6
  61.          Return "Sunday"
  62.    EndSelect
  63. EndFunc   ;==>_GUICtrlMonthCalGet1stDOW
  64.  
  65. ;===============================================================================
  66. ;
  67. ; Description:            _GUICtrlMonthCalGetColor
  68. ; Parameter(s):        $h_monthcal - controlID
  69. ;                            $i_color - Value of type int specifying which month calendar color to retrieve.
  70. ; Requirement:            None.
  71. ; Return Value(s):    Array containing the color
  72. ; User CallTip:        _GUICtrlMonthCalGetColor($h_monthcal, $i_color) Retrieves the color for a given portion of a month calendar control. (required: <GuiMonthCal.au3>)
  73. ; Author(s):            Gary Frost (custompcs at charter dot net)
  74. ; Note(s):                $i_color this value can be one of the following:
  75. ;                                $MCSC_BACKGROUND
  76. ;                                    Retrieve the background color displayed between months.
  77. ;                                $MCSC_MONTHBK
  78. ;                                    Retrieve the background color displayed within the month.
  79. ;                                $MCSC_TEXT
  80. ;                                    Retrieve the color used to display text within a month.
  81. ;                                $MCSC_TITLEBK
  82. ;                                    Retrieve the background color displayed in the calendar's title.
  83. ;                                $MCSC_TITLETEXT
  84. ;                                    Retrieve the color used to display text within the calendar's title.
  85. ;                                $MCSC_TRAILINGTEXT
  86. ;                                    Retrieve the color used to display header day and trailing day text.
  87. ;                                    Header and trailing days are the days from the previous and following
  88. ;                                    months that appear on the current month calendar.
  89. ;
  90. ;                            $array[0] - contains the number returned
  91. ;                            $array[1] - contains COLORREF rgbcolor
  92. ;                            $array[2] - contains Hex BGR color
  93. ;                            $array[3] - contains Hex RGB color
  94. ;===============================================================================
  95. Func _GUICtrlMonthCalGetColor($h_monthcal, $i_color)
  96.    Local $result, $a_result[4]
  97.    $a_result[0] = 3
  98.    If IsHWnd($h_monthcal) Then
  99.       Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_monthcal, "int", $MCM_GETCOLOR, "int", $i_color, "int", 0)
  100.       $result = $a_ret[0]
  101.    Else
  102.       $result = GUICtrlSendMsg($h_monthcal, $MCM_GETCOLOR, $i_color, 0)
  103.    EndIf
  104.    $a_result[1] = Int($result) ; COLORREF rgbcolor
  105.    $a_result[2] = "0x" & Hex(String($result), 6) ; Hex BGR color
  106.    $a_result[3] = Hex(String($result), 6)
  107.    $a_result[3] = "0x" & StringMid($a_result[3], 5, 2) & StringMid($a_result[3], 3, 2) & StringMid($a_result[3], 1, 2) ; Hex RGB Color
  108.    Return $a_result
  109. EndFunc   ;==>_GUICtrlMonthCalGetColor
  110.  
  111. ;===============================================================================
  112. ;
  113. ; Description:            _GUICtrlMonthCalGetDelta
  114. ; Parameter(s):        $h_monthcal - controlID
  115. ; Requirement:            None.
  116. ; Return Value(s):    If the month delta was previously set using the _GUICtrlMonthCalSetDelta,
  117. ;                                returns an INT value that represents the month calendar's current scroll rate.
  118. ;                            If the month delta was not previously set using the _GUICtrlMonthCalSetDelta,
  119. ;                                or the month delta was reset to the default,
  120. ;                                returns an INT value that represents the current number of months visible.
  121. ; User CallTip:        _GUICtrlMonthCalGetDelta($h_monthcal) Retrieves the scroll rate for a month calendar control. (required: <GuiMonthCal.au3>)
  122. ; Author(s):            Gary Frost (custompcs at charter dot net)
  123. ; Note(s):
  124. ;
  125. ;===============================================================================
  126. Func _GUICtrlMonthCalGetDelta($h_monthcal)
  127.    If IsHWnd($h_monthcal) Then
  128.       Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_monthcal, "int", $MCM_GETMONTHDELTA, "int", 0, "int", 0)
  129.       Return $a_ret[0]
  130.    Else
  131.       Return GUICtrlSendMsg($h_monthcal, $MCM_GETMONTHDELTA, 0, 0)
  132.    EndIf
  133. EndFunc   ;==>_GUICtrlMonthCalGetDelta
  134.  
  135. ;===============================================================================
  136. ;
  137. ; Description:            _GUICtrlMonthCalGetMaxSelCount
  138. ; Parameter(s):        $h_monthcal - controlID
  139. ; Requirement:            None.
  140. ; Return Value(s):    Returns an INT value that represents the total number of days that can be selected for the control.
  141. ; User CallTip:        _GUICtrlMonthCalGetMaxSelCount($h_monthcal) Retrieves the maximum date range that can be selected in a month calendar control. (required: <GuiMonthCal.au3>)
  142. ; Author(s):            Gary Frost (custompcs at charter dot net)
  143. ; Note(s):
  144. ;
  145. ;===============================================================================
  146. Func _GUICtrlMonthCalGetMaxSelCount($h_monthcal)
  147.    If IsHWnd($h_monthcal) Then
  148.       Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_monthcal, "int", $MCM_GETMAXSELCOUNT, "int", 0, "int", 0)
  149.       Return $a_ret[0]
  150.    Else
  151.       Return GUICtrlSendMsg($h_monthcal, $MCM_GETMAXSELCOUNT, 0, 0)
  152.    EndIf
  153. EndFunc   ;==>_GUICtrlMonthCalGetMaxSelCount
  154.  
  155. ;===============================================================================
  156. ;
  157. ; Description:            _GUICtrlMonthCalGetMaxTodayWidth
  158. ; Parameter(s):        $h_monthcal - controlID
  159. ; Requirement:            None.
  160. ; Return Value(s):    Returns the width of the "today" string, in pixels.
  161. ; User CallTip:        _GUICtrlMonthCalGetMaxTodayWidth($h_monthcal) Retrieves the maximum width of the "today" string in a month calendar control. (required: <GuiMonthCal.au3>)
  162. ; Author(s):            Gary Frost (custompcs at charter dot net)
  163. ; Note(s):
  164. ;
  165. ;===============================================================================
  166. Func _GUICtrlMonthCalGetMaxTodayWidth($h_monthcal)
  167.    If IsHWnd($h_monthcal) Then
  168.       Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_monthcal, "int", $MCM_GETMAXTODAYWIDTH, "int", 0, "int", 0)
  169.       Return $a_ret[0]
  170.    Else
  171.       Return GUICtrlSendMsg($h_monthcal, $MCM_GETMAXTODAYWIDTH, 0, 0)
  172.    EndIf
  173. EndFunc   ;==>_GUICtrlMonthCalGetMaxTodayWidth
  174.  
  175. ;===============================================================================
  176. ;
  177. ; Description:            _GUICtrlMonthCalGetMinReqRECT
  178. ; Parameter(s):        $h_monthcal - controlID
  179. ; Requirement:            None.
  180. ; Return Value(s):    Array containing the RECT, first element ($array[0]) contains the number of elements
  181. ;                            if error -1 is returned
  182. ; User CallTip:        _GUICtrlMonthCalGetMinReqRECT($h_monthcal) Retrieves the minimum size required to display a full month in a month calendar control.  (required: <GuiMonthCal.au3>)
  183. ; Author(s):            Gary Frost (custompcs at charter dot net)
  184. ; Note(s):                The minimum required window size for a month calendar control depends on the currently selected font,
  185. ;                            control styles, system metrics, and regional settings.
  186. ;
  187. ;===============================================================================
  188. Func _GUICtrlMonthCalGetMinReqRECT($h_monthcal)
  189. ;~     typedef struct _RECT {
  190. ;~       LONG left;
  191. ;~       LONG top;
  192. ;~       LONG right;
  193. ;~       LONG bottom;
  194. ;~     } RECT, *PRECT;
  195.    Local $RECT = "int;int;int;int"
  196.    Local $left = 1
  197.    Local $top = 2
  198.    Local $right = 3
  199.    Local $bottom = 4
  200.    Local $p, $v_ret
  201.    $p = DllStructCreate($RECT)
  202.    If @error Then Return SetError(-1,-1,-1)
  203.    If IsHWnd($h_monthcal) Then
  204.       $v_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_monthcal, "int", $MCM_GETMINREQRECT, "int", 0, "ptr", DllStructGetPtr($p))
  205.       If (Not $v_ret[0]) Then Return SetError(-1,-1,-1)
  206.    Else
  207.       $v_ret = GUICtrlSendMsg($h_monthcal, $MCM_GETMINREQRECT, 0, DllStructGetPtr($p))
  208.       If (Not $v_ret) Then Return SetError(-1,-1,-1)
  209.    EndIf
  210.    Local $array = StringSplit(DllStructGetData($p, $left) & "," & DllStructGetData($p, $top) & "," & DllStructGetData($p, $right) & "," & DllStructGetData($p, $bottom), ",")
  211.    Return $array
  212. EndFunc   ;==>_GUICtrlMonthCalGetMinReqRECT
  213.  
  214. ;===============================================================================
  215. ;
  216. ; Description:            _GUICtrlMonthCalSet1stDOW
  217. ; Parameter(s):        $h_monthcal - controlID
  218. ;                            $s_day - Value representing which day is to be set as the first day of the week.
  219. ; Requirement:            None.
  220. ; Return Value(s):    The previous first day of the week.
  221. ;                            if error -1 is returned
  222. ; User CallTip:        _GUICtrlMonthCalSet1stDOW($h_monthcal, $s_day) Sets the first day of the week for a month calendar control. (required: <GuiMonthCal.au3>)
  223. ; Author(s):            Gary Frost (custompcs at charter dot net)
  224. ; Note(s):                $s_day:
  225. ;                                0 or "Monday"
  226. ;                                1 or "Tuesday"
  227. ;                                2 or "Wednesday"
  228. ;                                3 or "Thursday"
  229. ;                                4 or "Friday"
  230. ;                                5 or "Saturday"
  231. ;                                6 or "Sunday"
  232. ;
  233. ;===============================================================================
  234. Func _GUICtrlMonthCalSet1stDOW($h_monthcal, $s_day)
  235.    Local $i_day
  236.    Select
  237.       Case String($s_day) = "0" Or StringUpper($s_day) = "MONDAY"
  238.          $i_day = 0
  239.       Case String($s_day) = "1" Or StringUpper($s_day) = "TUESDAY"
  240.          $i_day = 1
  241.       Case String($s_day) = "2" Or StringUpper($s_day) = "WEDNESDAY"
  242.          $i_day = 2
  243.       Case String($s_day) = "3" Or StringUpper($s_day) = "THURSDAY"
  244.          $i_day = 3
  245.       Case String($s_day) = "4" Or StringUpper($s_day) = "FRIDAY"
  246.          $i_day = 4
  247.       Case String($s_day) = "5" Or StringUpper($s_day) = "SATURDAY"
  248.          $i_day = 5
  249.       Case String($s_day) = "6" Or StringUpper($s_day) = "SUNDAY"
  250.          $i_day = 6
  251.       Case Else
  252.             Return SetError(-1,-1,-1)
  253.    EndSelect
  254.    If IsHWnd($h_monthcal) Then
  255.       Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_monthcal, "int", $MCM_SETFIRSTDAYOFWEEK, "int", 0, "int", $i_day)
  256.       Return $a_ret[0]
  257.    Else
  258.       Return GUICtrlSendMsg($h_monthcal, $MCM_SETFIRSTDAYOFWEEK, 0, $i_day)
  259.    EndIf
  260. EndFunc   ;==>_GUICtrlMonthCalSet1stDOW
  261.  
  262. ;===============================================================================
  263. ;
  264. ; Description:            _GUICtrlMonthCalSetColor
  265. ; Parameter(s):        $h_monthcal - controlID
  266. ;                            $i_color - Value of type int specifying which month calendar color to set.
  267. ;                            $i_colorref - Value that represents the color that will be set for the specified area of the month calendar.
  268. ;                            $i_refType - Optional: Type of value used for $i_colorref
  269. ; Requirement:            None.
  270. ; Return Value(s):    Returns an array of the previous color setting for the specified portion of the month calendar control if successful.
  271. ;                            Otherwise, the return is -1.
  272. ; User CallTip:        _GUICtrlMonthCalSetColor($h_monthcal, $i_color, $i_colorref[, $i_refType = 0]) Sets the color for a given portion of a month calendar control. (required: <GuiMonthCal.au3>)
  273. ; Author(s):            Gary Frost (custompcs at charter dot net)
  274. ; Note(s):                $i_color this value can be one of the following:
  275. ;                                $MCSC_BACKGROUND
  276. ;                                    Set the background color displayed between months.
  277. ;                                $MCSC_MONTHBK
  278. ;                                    Set the background color displayed within the month.
  279. ;                                $MCSC_TEXT
  280. ;                                    Set the color used to display text within a month.
  281. ;                                $MCSC_TITLEBK
  282. ;                                    Set the background color displayed in the calendar's title.
  283. ;                                $MCSC_TITLETEXT
  284. ;                                    Set the color used to display text within the calendar's title.
  285. ;                                $MCSC_TRAILINGTEXT
  286. ;                                    Set the color used to display header day and trailing day text.
  287. ;                                    Header and trailing days are the days from the previous and following
  288. ;                                    months that appear on the current month calendar.
  289. ;
  290. ;                                $i_refType = 0 $i_colorref is COLORREF rgbcolor (default)
  291. ;                                $i_refType = 1 $i_colorref is Hex BGR color
  292. ;                                $i_refType = 0 $i_colorref is Hex RGB color
  293. ;
  294. ;                                Value returned:
  295. ;                                    array[0] = number of elements
  296. ;                                    array[1] = COLORREF rbgcolor
  297. ;                                    array[2] = Hex BGR color
  298. ;                                    array[3] = Hex RGB color
  299. ;
  300. ;===============================================================================
  301. Func _GUICtrlMonthCalSetColor($h_monthcal, $i_color, $i_colorref, $i_refType = 0)
  302.    Local $result, $a_result[4]
  303.    $a_result[0] = 3
  304.    If ($i_refType == 1) Then
  305.       $i_colorref = Int($i_colorref)
  306.    ElseIf ($i_refType == 2) Then
  307.       $i_colorref = Hex(String($i_colorref), 6)
  308.       $i_colorref = Int('0x' & StringMid($i_colorref, 5, 2) & StringMid($i_colorref, 3, 2) & StringMid($i_colorref, 1, 2))
  309.    EndIf
  310.    If IsHWnd($h_monthcal) Then
  311.       Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_monthcal, "int", $MCM_SETCOLOR, "int", $i_color, "int", $i_colorref)
  312.       $result = $a_ret[0]
  313.    Else
  314.       $result = GUICtrlSendMsg($h_monthcal, $MCM_SETCOLOR, $i_color, $i_colorref)
  315.    EndIf
  316.    If ($result == -1) Then Return SetError(-1,-1,-1)
  317.    
  318.    $a_result[1] = Int($result) ; COLORREF rgbcolor
  319.    $a_result[2] = "0x" & Hex(String($result), 6) ; Hex BGR color
  320.    $a_result[3] = Hex(String($result), 6)
  321.    $a_result[3] = "0x" & StringMid($a_result[3], 5, 2) & StringMid($a_result[3], 3, 2) & StringMid($a_result[3], 1, 2) ; Hex RGB Color
  322.    Return $a_result
  323. EndFunc   ;==>_GUICtrlMonthCalSetColor
  324.  
  325. ;===============================================================================
  326. ;
  327. ; Description:            _GUICtrlMonthCalSetDelta
  328. ; Parameter(s):        $h_monthcal - controlID
  329. ;                            $i_delta - Value representing the number of months to be set as the control's scroll rate.
  330. ; Requirement:            None.
  331. ; Return Value(s):    Returns an INT value that represents the previous scroll rate.
  332. ; User CallTip:        _GUICtrlMonthCalSetDelta($h_monthcal, $i_delta) Sets the scroll rate for a month calendar control. (required: <GuiMonthCal.au3>)
  333. ; Author(s):            Gary Frost (custompcs at charter dot net)
  334. ; Note(s):                $i_delta
  335. ;                                If this value is zero, the month delta is reset to the default,
  336. ;                                which is the number of months displayed in the control.
  337. ;
  338. ;===============================================================================
  339. Func _GUICtrlMonthCalSetDelta($h_monthcal, $i_delta)
  340.    If IsHWnd($h_monthcal) Then
  341.       Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_monthcal, "int", $MCM_SETMONTHDELTA, "int", $i_delta, "int", 0)
  342.       Return $a_ret[0]
  343.    Else
  344.       Return GUICtrlSendMsg($h_monthcal, $MCM_SETMONTHDELTA, $i_delta, 0)
  345.    EndIf
  346. EndFunc   ;==>_GUICtrlMonthCalSetDelta
  347.  
  348. ;===============================================================================
  349. ;
  350. ; Description:            _GUICtrlMonthCalSetMaxSelCount
  351. ; Parameter(s):        $h_monthcal - controlID
  352. ;                            $i_maxsel - Value of type int that will be set to represent the maximum number of days that can be selected.
  353. ; Requirement:            None.
  354. ; Return Value(s):    Returns nonzero if successful, or zero otherwise.
  355. ; User CallTip:        _GUICtrlMonthCalSetMaxSelCount($h_monthcal, $i_maxsel) Sets the maximum number of days that can be selected in a month calendar control. (required: <GuiMonthCal.au3>)
  356. ; Author(s):            Gary Frost (custompcs at charter dot net)
  357. ; Note(s):                This will fail if applied to a month calendar control that does not use the $MCS_MULTISELECT style.
  358. ;
  359. ;===============================================================================
  360. Func _GUICtrlMonthCalSetMaxSelCount($h_monthcal, $i_maxsel)
  361.    If IsHWnd($h_monthcal) Then
  362.       Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_monthcal, "int", $MCM_SETMAXSELCOUNT, "int", $i_maxsel, "int", 0)
  363.       Return $a_ret[0]
  364.    Else
  365.       Return GUICtrlSendMsg($h_monthcal, $MCM_SETMAXSELCOUNT, $i_maxsel, 0)
  366.    EndIf
  367. EndFunc   ;==>_GUICtrlMonthCalSetMaxSelCount
  368.